import os
from utils.file.constant import *

def get_file_list(folder, suffix=""):
    """
    获取文件列表
    :param folder: 文件夹
    :param suffix: 文件后缀，.docx或者.xlsx，默认所有文件
    :return:
    """
    file_list = []
    for basename in os.listdir(folder):
        if os.path.isdir(os.path.join(folder,basename)):    # 文件夹
            continue
        if not basename.endswith(suffix):   # 不符合后缀
            continue
        if "$" in basename:     # 已打开的文件
            continue
        file_list.append(basename)
    return file_list

def get_sort_file_list(folder, suffix="", key="修改日期", reverse="升序"):
    """
    获取带顺序的文件列表
    :param folder: 文件夹
    :param suffix: 文件后缀，.docx或者.xlsx，默认所有文件
    :param key: 排序项【文件名称、修改日期、文件大小、文件数字】
    :param reverse: 排序方式【升序、降序】
    :return:
    """
    file_list = []
    for basename in get_file_list(folder,suffix):
        if not basename.endswith(suffix) or ("$" in basename):  # 过滤非word文件 或 打开的文件
            continue
        abspath = os.path.join(folder, basename)
        file_list.append({
            "basename": basename,
            "sort_value": SORT_VALUE[key](abspath)
        })
    file_list.sort(key=lambda w: w["sort_value"], reverse=SORT_REVERSE[reverse])  # 按照访问日期排序
    return [item["basename"] for item in file_list]



def read_config(path="config.txt"):
    """
    读取配置文件
    :param path:
    """
    configs = {}
    if not os.path.exists(path):    # 文件不存在
        return configs
    with open(path, 'r', encoding='utf8') as f:     # 只读
        lines = f.readlines()
    for text in lines:
        key, value = text.replace("\n", "").split("=")
        configs[key] = value
    return configs

def write_config(path="config.txt",configs={}):
    """
    读取配置文件
    :param path:
    :param configs: 参数字典
    """
    with open(path, 'w', encoding='utf8') as f:     # 只写
        for key, value in configs.items():
            f.write("{}={}\n".format(key, value))



